"""
元素信息操作API
    方法：
        1. text 获取元素文本 如：driver.text
        2. size 获取元素大小 如：driver.size
        3. get_attribute 获取元素属性值 如：driver.get_attribute("id")
        4. is_displayed 判断元素是否可见 如：element.is_displayed()
        5. is_enabled 判断元素是否被可用 如：element.is_enabled()
        6. is_selected 判断元素是否被选中 如：element.is_selected()

    提示：
        1. text和size调用时 无括号
        2. get_attribute一般应用场景，判断一组元素是否为想要的元素或者判断元素属性值是否正确
        3. is_displayed、is_enabled、is_selected，在特殊应用场景中使用。

"""
# 导包
from time import sleep

from selenium import webdriver

# 获取浏览器驱动对象
driver = webdriver.Chrome()
# driver.maximize_window()
# 打开url
driver.get("https://demo.ruoyi.vip/login")
sleep(10)
driver.get("https://demo.ruoyi.vip/system/user/add")
sleep(2)

# 获取用户名文本框大小
size = driver.find_element_by_css_selector('[name="userName"]').size
print("用户名大小为", size)
sleep(2)

# 获取页面上第一个超文本链接内容
driver.get("https://demo.ruoyi.vip/")
text = driver.find_element_by_css_selector("a").text
print("页面中第一个a标签为：", text)

# 获取页面上第一个超文本链接地址 get_attribute("href")
attr = driver.find_element_by_css_selector("a").get_attribute("href")
print("页面中第一个a标签href属性值为：", attr)

# 判断 span元素是否可见
display = driver.find_element_by_css_selector(".dropdown-menu").is_displayed()
print("span元素是否可见：", display)

driver.get("https://demo.ruoyi.vip/system/notice")
sleep(2)

# 判断 取消按钮是否可用 .btn-danger
enabled = driver.find_element_by_css_selector(".btn-primary.single").is_enabled()
print("取消按钮是否可用：", enabled)

driver.get("https://demo.ruoyi.vip/system/user/add")
sleep(2)

# 选中旅游按钮: 直接点击 input 会出现，被 .iCheck-helper 挡住的异常
driver.find_element_by_css_selector('.iCheck-helper').click()

sleep(3)
# 判断旅游是否被选中
select = driver.find_element_by_css_selector('[name="role"]').is_selected()
print("旅游是否被选中：", select)

# 暂停3秒
sleep(3)

# 关闭浏览器驱动对象
driver.quit()
